package com.xf.mapper;

import com.baomidou.mybatisplus.annotation.SqlParser;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.xf.common.core.entity.dmp.DmpAuthUser;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @author JoeyLiu
 * @create 2022-04-01 13:59
 */
@Mapper
public interface DmpAuthUserMapper extends BaseMapper<DmpAuthUser> {


    /**
     * 查找用户详细信息
     *
     * @param page 分页对象
     * @param user 用户对象，用于传递查询条件
     * @param <T>  type
     * @return Ipage
     */
    <T> IPage<DmpAuthUser> findUserDetailPage(Page<T> page, @Param("user") DmpAuthUser user);

    @SqlParser(filter = true)
    IPage<DmpAuthUser> pageWithCreatedUser(IPage<DmpAuthUser> page, String aliasOrName, Integer state);

    /**
     * 查找用户详细信息
     *
     * @param user 用户对象，用于传递查询条件
     * @return List<User>
     */
    List<DmpAuthUser> findUserDetail(@Param("user") DmpAuthUser user);

    DmpAuthUser getOneByName(@Param("user") DmpAuthUser user);

    DmpAuthUser selectByNameOrEmail(String user);

    DmpAuthUser selectByUserCode(String userCode);

    List<DmpAuthUser> searchUsers(@Param("user") DmpAuthUser user);

    DmpAuthUser selectByEmail(@Param("user") DmpAuthUser user);

    DmpAuthUser selectByUsername(@Param("user") DmpAuthUser user);

    int updateByUserCode(@Param("updated") DmpAuthUser updated);

    @SqlParser(filter = true)
    int insertSelective(DmpAuthUser dmpAuthUser);


    /**
     * 获取用户
     *
     * @param username 用户名
     * @return 用户
     */
    DmpAuthUser findByName(String username);

    /**
     * 根据手机号获取用户
     *
     * @param mobile
     * @return
     */
    DmpAuthUser findByMobile(String mobile);


}